package exception;

/*
面试题1：
    # final、finally、finalize的区别？？？
    * final修饰的类不能被继承、修饰的方法不能被重写、修饰的变量是常量，只能被赋值一次
    * finally是try语句中的一个语句体不能单独使用，用来释放资源
    * finalize是一个方法，现在已经不用了，作用是：
    * 当垃圾回收器确定不存在对该对象的更多引用时，由对象的垃圾回收器调用此方法

面试题2：
    # 如果catch里面有return语句，请问finally的代码还会执行吗？如果会，
    # 请问是在return前还是return后？？？
    * return语句建立返回路径，再执行finally，最后return
 */
public class Interview_Question {
    public static void main(String[] args) {
        Demo_ demo = new Demo_();
        System.out.println(demo.method());
    }
}
class Demo_ {
    public int method() {
        int x = 10;
        try {
            x = 20;
            System.out.println(1/0);
            return x;
        } catch (Exception e) {
            x = 30;
            return x;
        } finally {
            x = 40;
            //return 千万不要在finally里面写返回语句
            //因为finally的作用是为了释放资源是肯定会
            //执行的，如果在这里面写返回语句，那么try
            //和catch的结果都会被改变，所以这么写没有意义
        }
    }
}
